# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-06-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.线条工具集 import *
from 神笔码靓.神笔库.配置 import *
from 神笔码靓.神笔库.通用工具集 import *


class 更多的神笔绘图板方法(神笔绘图板):
    def 页面设置(self, 设置: 纸张设置):
        # 输出 PDF 文件，以及 页面打印，在这里设置好
        设置.上页边距 = "0"
        设置.下页边距 = "0"
        设置.左页边距 = "0.1cm"
        设置.右页边距 = "0"
        设置.页面方向 = 纸张方向.自动识别
        设置.页面尺寸规格 = "A4"
        设置.页面缩放 = 1.0

    def 矩形(self):
        self.画矩形(x=220, y=10, 宽=200, 高=100, 描边颜色=颜色.黑色, 圆角半径=10, 描边样式="5,5")
        self.写字(x=320, y=55, 文字="矩形水印", 字体大小=30, 填充颜色=颜色.蓝色, 字体=系统字体.华文新魏, 透明度=0.5)

    def 多边形(self):
        self.画多边形(顶点列表=[(10, 130), (140, 130), (140, 200), (10, 200)])
        self.写字(x=80, y=165, 文字="多边形", 字体大小=30, 填充颜色=颜色.红色, 字体=系统字体.隶书, 透明度=0.5)

    def 线性渐变色(self):
        增加渐变中间点 = [{"偏移": "80%", "颜色": 颜色.黄色, "透明度": 1.0}]
        渐变色 = self.创建线性渐变色(开始位置=(10, 10), 结束位置=(10, 100), 开始颜色=颜色.红色, 结束颜色=颜色.绿色,
                           增加渐变中间点=增加渐变中间点
                           )
        self.连线(路径点列表=[("移动", 10, 10), ("直线", 10, 100), ("直线", 50, 120),
                       ("垂直线", 120), ("直线", 100, 100), ("直线", 100, 10)],
                闭合=是, 填充颜色=渐变色)
        self.写字(x=55, y=50, 文字="线性渐变色", 字体大小=13, 填充颜色=颜色.RGB(0, 0, 0))

    def 径向渐变色(self):
        渐变色 = self.创建径向渐变色(渐变开始中心点=(520, 180), 渐变半径=40, 开始颜色=颜色.红色, 结束颜色=颜色.橙色)
        self.画圆(x=520, y=180, 半径=50, 描边颜色=颜色.中绿宝石, 填充颜色=渐变色, 描边样式="5,5")
        self.写字(x=520, y=180, 文字="径向渐变色", 字体大小=13, 填充颜色=颜色.RGB(0, 0, 0))

    def 渐变色文字(self):
        增加渐变中间点 = [{"偏移": "16%", "颜色": 颜色.橙色},
                   {"偏移": "33%", "颜色": 颜色.黄色},
                   {"偏移": "50%", "颜色": 颜色.绿色},
                   {"偏移": "66%", "颜色": 颜色.青色},
                   {"偏移": "83%", "颜色": 颜色.蓝色},
                   ]
        渐变色 = self.创建线性渐变色(开始位置=(580, 0), 结束位置=(780, 0), 开始颜色=颜色.红色, 结束颜色=颜色.紫色,
                           增加渐变中间点=增加渐变中间点)
        渐变色.旋转(45)
        self.写字(x=580, y=260, 文字="渐变色粗体文字", 水平基线对齐=文字水平基线对齐.起始点对齐,
                字体大小=30, 填充颜色=渐变色, 粗体=是)
        self.写字(x=580, y=300, 文字="渐变色斜体文字", 水平基线对齐=文字水平基线对齐.起始点对齐,
                字体大小=30, 填充颜色=渐变色, 斜体=是, )
        self.写字(x=580, y=340, 文字="渐变下划线文字", 水平基线对齐=文字水平基线对齐.起始点对齐,
                字体大小=30, 填充颜色=渐变色, 下划线=是)

    def 图案填充(self):
        渐变色 = self.创建径向渐变色(渐变开始中心点=(9, 9), 渐变半径=8, 开始颜色=颜色.红色, 结束颜色=颜色.黄色)
        圆 = self.画圆(x=9, y=9, 半径=9, 描边颜色=颜色.透明, 填充颜色=渐变色)
        渐变圆图案 = self.创建图案(x=0, y=0, 宽=20, 高=20, 元素列表=[圆])

        矩形 = self.画矩形(x=60, y=220, 宽=200, 高=100, 填充颜色=渐变圆图案)
        # self.标注文字(元素对象=矩形, 相对位置=(100, 120), 文字="图案填充", 字体大小=16, 填充颜色=颜色.RGB(0, 0, 0))

    def 椭圆(self):
        self.画椭圆(x=750, y=180, 半径=(30, 20), 描边颜色=颜色.红色, 填充颜色=颜色.青色)
        self.写字(x=750, y=180, 文字="椭圆", 字体大小=13, 填充颜色=颜色.RGB(0, 0, 0))

    def 文本(self):
        self.写字(x=440, y=60, 文字="悠然体", 字体大小=50, 填充颜色=颜色.蓝色, 字体="悠然体",
                水平基线对齐=文字水平基线对齐.起始点对齐, 垂直基线对齐=文字垂直基线对齐.中线对齐).阴影(偏移=(3, 3), 模糊度=2)

        self.写字(x=440, y=80, 文字="新青年体", 字体大小=40, 填充颜色=颜色.红色, 字体="新青年体",
                水平基线对齐=文字水平基线对齐.起始点对齐, 垂直基线对齐=文字垂直基线对齐.顶线对齐).形态(形态操作='膨胀', 操作值=2)
        self.写字(x=440, y=80, 文字="新青年体", 字体大小=40, 填充颜色=颜色.黑色, 字体="新青年体",
                水平基线对齐=文字水平基线对齐.起始点对齐, 垂直基线对齐=文字垂直基线对齐.顶线对齐)

        self.写字(x=300, y=180, 文字="隶书空心字", 字体大小=60, 字体=系统字体.隶书, 填充颜色=颜色.白色, 描边宽度=1, 描边样式="1,1")
        self.写字(x=150, y=60, 文字="旋转字", 字体大小=20, 填充颜色=颜色.RGB(255, 0, 0)).旋转(20)

    def 立体球(self):
        b = self.画椭圆(860, 105, 半径=(60, 12), 填充颜色=颜色.RGB(30, 0, 0), 描边颜色=颜色.透明, 透明度=0.5).模糊(2)
        # self.变换.旋转(对象元素=b, 旋转角度=5)
        渐变中间点 = [
            {"偏移": ".4", "颜色": "#ff0000"},
            {"偏移": ".5", "颜色": "#ee0000"},
            {"偏移": ".9", "颜色": "#990000"},
        ]
        填充渐变色 = self.创建径向渐变色(渐变开始中心点=(920, 30), 渐变半径=75,
                             开始颜色=颜色.RGB(255, 210, 210), 结束颜色=颜色.RGB(125, 0, 0),
                             开始偏移="0.1", 结束偏移="1.0",
                             增加渐变中间点=渐变中间点)
        self.画圆(900, 60, 半径=50, 填充颜色=填充渐变色, 描边颜色=颜色.透明)
        # self.写字(x=900, y=40, 文字="立体球", 字体大小=20, 填充颜色=颜色.白色)

        路径点集合 = [(800, 50), ("C", 820, 40, 840, 40, 860, 50)]
        self.路径文字(路径点集合, "立体球", 字体大小=20, 粗体=是, 填充颜色=颜色.黄色).立体阴影()

    def 图片和克隆(self):
        印章 = self.贴图(x=600, y=10, 图片文件="../资源库/图片/三月三印章.png").缩放(0.25)
        self.复制元素(对象元素=印章).缩放(0.5).平移(850, 80).阴影(偏移=(4, 4), 模糊度=2)

        # 打开 蛋糕.svg 文件，找到颜色值，比如：currentColor
        蛋糕1 = self.SVG贴图(x=60, y=360, 图片文件="../资源库/图片/蛋糕.svg").颜色替换("currentColor", 颜色.红色)
        蛋糕2 = self.SVG贴图(x=90, y=360, 图片文件="../资源库/图片/蛋糕.svg").颜色替换("currentColor", 颜色.绿色)
        蛋糕3 = self.SVG贴图(x=120, y=360, 图片文件="../资源库/图片/蛋糕.svg").颜色替换("currentColor", 颜色.蓝色)
        蛋糕4 = self.SVG贴图(x=150, y=360, 图片文件="../资源库/图片/蛋糕.svg").颜色替换("currentColor", 颜色.中紫罗兰色)

        self.写字(x=60, y=400, 文字="SVG图片颜色替换", 字体大小=13, 水平基线对齐=文字水平基线对齐.起始点对齐,
                填充颜色=颜色.RGB(0, 0, 0))

    def 遮罩_(self):
        渐变色 = self.创建线性渐变色(开始位置=(800, 0), 结束位置=(1000, 0), 开始颜色=颜色.白色, 结束颜色=颜色.白色,
                           开始偏移=0, 结束偏移=1, 开始透明度=0, 结束透明度=1)
        遮罩元素 = self.画矩形(800, 240, 200, 200, 填充颜色=渐变色)

        绿色矩形 = self.画矩形(800, 240, 200, 200, 填充颜色=颜色.绿色)
        红色矩形 = self.画矩形(800, 240, 200, 200, 填充颜色=颜色.红色)
        self.遮罩(遮罩元素_=遮罩元素, 被遮元素=红色矩形,遮罩单位=空间坐标系单位.物体边界,遮罩内容单位=空间坐标系单位.物体边界)

        self.写字(x=900, y=340, 文字="遮罩使用", 字体大小=18, 填充颜色=颜色.白色)

    def 裁剪_(self):
        self.画矩形(x=300, y=240, 高=200, 宽=230, 填充颜色=颜色.橙色)
        足球1_效果 = self.贴图(x=300, y=240, 图片文件="../资源库/素材/足球.jpg").缩放(0.3)  # .旋转()
        # 矩形裁剪 = self.矩形裁剪(x=1080, y=880, 宽=520, 高=520, 被裁元素=足球1_效果)

        圆形裁剪 = self.圆形裁剪(x=1370, y=1150, 半径=280, 被裁元素=足球1_效果, 裁剪路径单位=空间坐标系单位.用户空间)

        self.写字(x=310, y=253, 文字="裁剪足球图片", 字体大小=13, 水平基线对齐=文字水平基线对齐.起始点对齐,
                填充颜色=颜色.RGB(0, 0, 0))

    def 画表格_(self):
        # 不等列宽的表格
        # self.画表格(x=540, y=370, 列宽=[30, 30, 50], 行高=20, 行数=4, 描边颜色=颜色.蓝色)
        # 不等列宽的表格
        self.画表格(x=540, y=370, 列宽=[20, 30, 40], 行高=[40, 20, 30], 行数=4, 列数=4, 描边颜色=颜色.蓝色)
        # 等列宽等行高表格
        self.画表格(x=670, y=370, 列宽=28, 行高=20, 行数=4, 列数=4, 描边颜色=颜色.红色)

        # self.画等列宽表格(左上起始点=(670, 370), 右下结束点=(780, 450), 列数=4, 行数=5)

    # def 图章(self):
    #     _图章 = 图章工具集(self)
    #     _圆形印章 = _图章.圆形印章(圆心点=(900, 170), 颜色=颜色.红色,
    #                      主文字="神笔码靓科技有限公司", 主文字字体=系统字体.华文新魏, 主文字微调=2,
    #                      中心文字="神", 中心文字字体="小篆体",
    #                      抬头文字="", 抬头文字字体=系统字体.华文新魏, 抬头文字大小=11, 抬头文字微调=-2,
    #                      副文字="用代码来画图", 副文字字体="小篆体", 副文字大小=9, 副文字微调=6)
    #
    #     self.克隆元素(x=800, y=100, 对象元素=_圆形印章, 缩放=0.5, 旋转角度=0)

    def 图章(self):
        # from 神笔码靓.码靓库.工作.圆形印章 import 圆形印章
        # 圆形印章_ = 圆形印章(self, 圆心点=(900, 170), 颜色=颜色.红色,
        #              主文字="神笔码靓科技有限公司", 主文字字体=系统字体.华文新魏,
        #              中心文字="神", 中心文字字体="小篆体",
        #              抬头文字="", 抬头文字字体=系统字体.华文新魏, 抬头文字大小=11, 抬头文字上下微调=-2,
        #              副文字="用代码来画图", 副文字字体="小篆体", 副文字大小=9)
        # _圆形印章 = 圆形印章_.构建()

        _圆形印章 = 神笔.神笔模板("圆形印章", 圆心点=(900, 170), 颜色=颜色.红色,
                        主文字="Python超人科技有限公司", 主文字字体=系统字体.华文新魏, 主文字间距=-0.5,
                        抬头文字="办公专用", 抬头文字字体=系统字体.华文新魏, 抬头文字大小=11, 抬头文字上下微调=-2, 抬头文字间距=-1,
                        副文字="93503454824", 副文字大小=9, 副文字间距=0
                        ).创造元素(x=0, y=0, id_="圆形印章")

        c = self.复制元素(x=400, y=100, 对象元素=_圆形印章).旋转(90, 旋转中心点=(900, 170)).缩放(0.5).平移(100, 140)
        # self.变换.旋转(对象元素=c, 旋转角度=0)

    def 画箭头线(self):
        self.箭头线(开始点=(180, 140), 结束点=(300, 140), 描边宽度=2, 描边颜色=颜色.红色, 样式=箭头样式.实心)
        self.箭头线(开始点=(320, 140), 结束点=(420, 140), 描边样式="5,5", 描边宽度=1)

    def 创作(self):
        # 注意：图框不会显示到 PDF 文件中，如果不希望SVG文件显示图框，可以注释或者删除以下代码
        self.显示图框()
        self.显示网格(网格线距=20, 网格颜色=颜色.暗灰色, 网格透明度=0.8, 网格字体大小=9)
        self.矩形()
        self.多边形()
        self.椭圆()
        self.文本()
        self.渐变色文字()
        self.图片和克隆()
        self.裁剪_()
        self.遮罩_()
        self.线性渐变色()
        self.径向渐变色()
        self.图案填充()
        self.画表格_()
        self.立体球()
        self.图章()
        self.画箭头线()


if __name__ == '__main__':
    # 作品文件路径：保存的 SVG（矢量图）格式的文件路径名称
    # 宽: 神笔绘图板也需要设置页面的宽度
    # 高: 神笔绘图板也需要设置页面的高度
    宽, 高 = 纸张大小.A4_横向(1)
    神笔 = 更多的神笔绘图板方法(作品文件路径="更多的神笔绘图板方法.svg", 宽=宽, 高=高)
    神笔.完成()
    # 神笔.生成PDF()
